#ifndef PARAMETRE_H
#define PARAMETRE_H

#include "image.h"
#include <QList>
#include <QImage>
#include <QFile>
#include <QSize>

enum TypeParam {all = -1, resultSizeId = 1, pictureSizeId = 2, pictureQuantityId = 3, pictureDistanceId = 4};
enum AutoManual {Auto = 11, Manual = 12};
enum Format {Pixel = 0, Cm = 1};
enum Forme {Rectangle, Cercle, Extra};

class Parametre
{
private:
    //Liste des images
    QList<Image*> listImage;

    //méthodes privées
    bool imgExist(Image *pImage);

    //Parametres
    QSize   resultSize;         //taille du collage en pixel
    int     pictureSize;        //taille de la photo en pixel (longueur du plus long coté)
    int     pictureQuantity;    //nombre de photo
    bool    addAllPicture;      //Inique si toutes les photos sont ajoutées
    int     pictureDistance;    //distance entre les photos en %
    Format  formatResult;       //format du collage
    Format  formatPictureSize;  //format de la taille de l'image
    Forme   forme;              //forme du dessin
    bool    animation;          //affichage de l'animation
    int     sizeBordure;        //taille de la bordure
    QColor  colorBordure;       //couleur de la bordure

    //Parametre géré automatiquement
    TypeParam paramAuto;

public:
    //Constructeurs
    Parametre();

    //Operateurs
    Parametre       operator=(Parametre const& p);

    //gestion liste images
    QList<Image*>   getListImage();
    void            setListImage(QList<Image*> e);
    QString         addImage(Image *e);
    bool            removeImage(QString pImagePath);

    //gestion paramètre
    //setter
    void setAutoParam(TypeParam typeParam);

    void setResultSize(QSize pResultSize);
    void setPictureSize(int pPictureSize);
    void setPictureQuantity(int pPictureQuantity);
    void setAddAllPicture(bool pAddAllPicture);
    void setPictureDistance(int pPictureDistance);
    void setResultWidth(int pResultWidth);
    void setResultHeight(int pResultHeight);
    void setFormatResult(Format pFormatResult);
    void setFormatPictureSize(Format pFormatPictureSize);
    void setForme(Forme pForme);
    void setSizeBordure(int pSizeBordure);
    void setColorBordure(QColor pColorBordure);

    //getter
    TypeParam getAutoParam();

    QSize   getResultSize();
    int     getPictureSize();
    int     getPictureQuantity();
    bool    getAddAllPicture();
    int     getPictureDistance();
    int     getResultWidth();
    int     getResultHeight();
    Format  getFormatResult();
    Format  getFormatPictureSize();
    Forme   getForme();
    int     getSizeBordure();
    QColor  getColorBordure();
};

#endif // PARAMETRE_H
